package entidades;

import herramientas.HashTable;
import java.util.ArrayList;
import javax.swing.JLabel;

public class Jugador {

    private String color;
    private String nomUsuario;
    private int id;
    private String codigoColor;
    private int codigoDecimalColor;
    private HashTable paises = new HashTable();
    private JLabel jL;
    private Mision mision;
    private int[] continentes;
    private ArrayList<Tarjeta> tarjetas;

    public JLabel getjL() {
        return jL;
    }

    public void setjL(JLabel jL) {
        this.jL = jL;
    }

    public Jugador(int id, String nomUsuario, String color) {
        this.id = id;
        this.color = color;
        this.nomUsuario = nomUsuario;
        this.continentes = new int[6];
        this.tarjetas = new ArrayList();
        setCodigoYCodigoDecimalColor();
    }

    public Jugador() {
        this.continentes = new int[6];
        this.tarjetas = new ArrayList();
    }

    public int[] getContinentes() {
        return continentes;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
        setCodigoYCodigoDecimalColor();
    }

    public String getNomUsuario() {
        return nomUsuario;
    }

    public void setNomUsuario(String nomUsuario) {
        this.nomUsuario = nomUsuario;
    }

    public int getId() {
        return id;
    }

    public void setID(int id) {
        this.id = id;
    }

    private void setCodigoYCodigoDecimalColor() {
        if (color.compareTo("Amarillo") == 0) {
            codigoColor = "#FFFF00";
            codigoDecimalColor = 16776960;
        } else if (color.compareTo("Azul") == 0) {
            codigoColor = "#0000FF";
            codigoDecimalColor = 255;
        } else if (color.compareTo("Magenta") == 0) {
            codigoColor = "#800080";
            codigoDecimalColor = 8388736;
        } else if (color.compareTo("Negro") == 0) {
            codigoColor = "#000000";
            codigoDecimalColor = 0;
        } else if (color.compareTo("Rojo") == 0) {
            codigoColor = "#FF0000";
            codigoDecimalColor = 16711680;
        } else if (color.compareTo("Verde") == 0) {
            codigoColor = "#00FF00";
            codigoDecimalColor = 65280;
        }
    }

    public String getCodigoColor() {
        return this.codigoColor;
    }

    public int getCodigoDecimalColor() {
        return this.codigoDecimalColor;
    }

    public String toString() {
        return "(" + this.nomUsuario + ", " + this.color + ")";
    }

    public void addPais(Pais p) {
        paises.put(p);
    }

    public void addJLabel(JLabel jL) {
        this.jL = jL;
    }

    public void setMision(Mision mision) {
        this.mision = mision;
        this.mision.addListaContinentes(this.continentes);
    }

    public Mision getMision() {
        return mision;
    }

    public void removePais(Pais pDefiende) {
        paises.borrar(pDefiende.getId());
    }

    public int getCantidadPaises() {
        return paises.size();
    }

    public void actualizarContadorPais(Pais p) {
        this.mision.actualizarContadorPais(p);
    }

    public void restarPaisContinente(int idContinente) {
        this.continentes[idContinente]--;
    }

    public void addTarjeta(Tarjeta t) {
        this.tarjetas.add(t);
    }

    public int getCantidadTarjetas() {
        return this.tarjetas.size();
    }

    public ArrayList<Tarjeta> getTarjetas() {
        return this.tarjetas;
    }

    public Tarjeta getTarjeta(int i) {
        return this.tarjetas.get(i);
    }

    public boolean existePais(int nroTarj) {
        boolean res = false;
        if (this.paises.getObject(nroTarj) != null) {
            res = true;
        }
        return res;
    }

    public Pais getPais(int idPais) {
        return (Pais) paises.getObject(idPais);
    }

    public Tarjeta removeTarjeta(int id) {

        Tarjeta t = null;
        for (int i = 0; i < tarjetas.size(); i++) {
            if (tarjetas.get(i).getId() == id) {
                t = tarjetas.remove(i);

            }
        }
        return t;
    }

    //Métodos Virtuales
    public ArrayList<Pais> getPaises() {
        ArrayList<Pais> paisesAux = new ArrayList();
        for (int i = 0; i < 50; i++) {
            if (paises.getObject(i) != null) {
                paisesAux.add((Pais) paises.getObject(i));
            }
        }
        return paisesAux;
    }
}
